#pragma once

#include "Entity.h"
#include "Bullet.h"

class Player : public Entity
{
private:

	//XY aim;
	float shotCoolDown; //VON these are for keeping track of the cool down time between shots
	float shotCoolDownMax;
	int health;
	int ammo;
	
	//BulletList magazine
public:

	float aimAngle; //using a float to hold the angle makes it easy to rotate.
			// VON: do we use a vector for the aim?  this means weird rotations and stuff, or does it? 

	Player();
	Player(XY startPos); // VON starting coords

	std::vector<Bullet*>* ownedBullets; //VON:  public for reasons of being public.  HAHAHAHA

	XY GetPos();

	XY GetCenterPos();

	bool IsDead();

	void Shoot();
	void GoFast();
	void GoSlow();
	void RotateClockwise(float deltaTime);
	void RotateCounterclockwise(float deltaTime);
	void Rotate(float angle);
	int GetHealth();
	void Kill();
	void TakeHit(); //VON -- if a bullet collides with the player, destroy the bullet and cause that player to Take a Hit from its health
	void SetBulletVec(std::vector<Bullet*>* bv);

	void Update(float deltaTime);
};